package com.example.JcGQS.util;

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import java.util.List;

/**
 * @ClassName RequestUtil
 * @Description 请求参数类
 * @author 末日
 * @date 2023/11/21
 */
public class RequestParamUtil {
    
    /**
     * @param json        要解析的json
     * @param key         json键
     * @param objectClass 返回类型
     * @return T
     * @Title resolveParam
     * @Description 解析指定参数
     */
    public static <T> T resolveParam(String json, String key, Class<T> objectClass) {
        return new JSONObject(json).get(key, objectClass);
    }
    
    /**
     * @param json      待解析的json
     * @param beanClass 返回对象类型
     * @return T
     * @Title resolveParamToBean
     * @Description 解析参数为对象
     */
    public static <T> T resolveParamToBean(String json, Class<T> beanClass) {
        return JSONUtil.toBean(json, beanClass);
    }
    
    /**
     * @param json      待解析的json
     * @param key       键
     * @param beanClass 对象类型
     * @return List<T>
     * @Title resolveParamToList
     * @Description 解析参数为list集合
     */
    public static <T> List<T> resolveParamToList(String json, String key, Class<T> beanClass) {
        JSONArray parseArray = JSONUtil.parseObj(json).getJSONArray(key);
        return parseArray.toList(beanClass);
    }
    
    public static <T> List<T> resolveArrayToList(String json, String key, Class<T> beanClass) {
        JSONArray jsonArray = JSONUtil.parseArray(json);
        return jsonArray.toList(beanClass);
    }
    
}
